package com.servitware.cardio.transport;

import java.util.Calendar;

import com.servitware.cardio.domain.transport.SolicitudTx;
import com.servitware.util.net.FtpWorker;
import com.servitware.util.net.ServerAbst;

/**
 * servitw
 * 9MeplYsc
 * @author erik
 *
 */
public class CardioFtpWorker extends FtpWorker
{
//	private Logger logger = Logger.getLogger(CardioFtpWorker.class.getName());
	
	private final String BASE_DIR = "";
	
	protected final String DIR_ARCHIVO_SESION = BASE_DIR + "/sesiones/";
	protected final String DIR_ARCHIVO_INFORME = BASE_DIR + "/informes/";
	
	
	public CardioFtpWorker(ServerAbst server)
	{
		super(server);
	}

	/**
	 * Extrae la carpeta del archivo de informe, segun la fecha de la sesion
	 * 
	 * Tiene en cuenta que Calendar trata los meses ZERO based, por lo tanto, suma 1
	 * 
	 * @param solicitudTx
	 * @return
	 */
	protected String _extractDirPorFecha(SolicitudTx solicitudTx)
	{
		Calendar cal = Calendar.getInstance();
		cal.setTime( solicitudTx.getSesionTx().getFecha() );
		
		StringBuilder dir = new StringBuilder( cal.get(Calendar.YEAR) + "/");
		
		/*
		 * tiene en cuenta que Calendar trata los meses ZERO based, por lo tanto, suma 1
		 */
		int month = cal.get(Calendar.MONTH) + 1;
		dir.append( ((month < 10) ? "0":"") + month + "/");
		
		int day = cal.get(Calendar.DAY_OF_MONTH);
		dir.append( ((day < 10) ? "0":"") + day );
		
		return dir.toString();
	}
	

	
	/**
	 * Crea la ruta al archivo de sesion, dada una solicitud que la contiene
	 * 
	 * @param solicitudTx
	 * @return
	 */
	protected String _creaRutaArchivoSesion(SolicitudTx solicitudTx)
	{
		StringBuilder ruta = new StringBuilder( DIR_ARCHIVO_SESION );
		
		ruta.append( _extractDirPorFecha(solicitudTx) );
		ruta.append( "/" );
		ruta.append( solicitudTx.getSesionTx().getNombreArchivo() );
		
		return ruta.toString();
	}
	

	/**
	 * Crea la ruta al archivo de informe, dada una solicitud que la contiene
	 * 
	 * @param solicitudTx
	 * @return
	 */
	protected String _creaRutaArchivoInforme(SolicitudTx solicitudTx)
	{
		StringBuilder ruta = new StringBuilder( DIR_ARCHIVO_INFORME );
		
		ruta.append( _extractDirPorFecha(solicitudTx) );
		ruta.append( "/" );
		ruta.append( solicitudTx.getInforme().getNombreArchivoInforme() );
		
		return ruta.toString();
	}

}
